package demo003;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class ParaTestClass {
	
    public static void parseMethod(ParaData data,Object obj,String mthname){
        //验证是否有注解
        //若有则两种方法：
        //1. 在编译时刻已经有了对应的表，查表即可
        //2. 如下的遍历方式。
        if(obj instanceof ParaRun){
            String str = null;
           
            Method [] methods = (Method[])obj.getClass().getMethods();
            
            for(Method method :methods){
                if(method.getName().equals(mthname)){
                	
                    Annotation[][] annotations = method.getParameterAnnotations();
                    for(Annotation[] tt : annotations){
                        for(Annotation t:tt){
                            if(t instanceof Para){
                                str = data.name;
                            }
                        }
                    }
                    ParaRun.run(str);
                }
            }
        }
    }
 
    public static void main(String[] args) throws Exception, RuntimeException { // 主方法
        //不直接传参数，而是将一个类中的数据传入
        ParaData dc = new ParaData("gg_gogoing");
        //通过对象 获取参数
        parseMethod(dc, new ParaRun(), "run");
        
    }

}
